﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Inventario.Negocio;
using System.Text;

namespace Inventario.Presentacion
{
    public partial class SalidaBodega : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                llenarcombos();
                llenarproductos();
            }
        }

        protected void DropDowNumero_factura_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void llenarcombos()
        {

            IngresoCabeceraComprobante x = new IngresoCabeceraComprobante();


            DropDowNumero_factura.DataSource = x.ObtenerComprobante().Where(c => c.Accion == "Salida");
            DropDowNumero_factura.DataTextField = "NumeroDocumento";
            DropDowNumero_factura.DataValueField = "CabeceraComprobanteId";
            DropDowNumero_factura.DataBind();

        }

        private void llenarproductos()
        {
            ClaseProducto x = new ClaseProducto();
            DropDownList1.DataSource = x.obtenerDatos();
            DropDownList1.DataTextField = "NombreProducto";
            DropDownList1.DataValueField = "ProductoId";
            DropDownList1.DataBind();
        }

        private string llenarproductosSalidos()
        {
            ClaseProducto x = new ClaseProducto();
            StringBuilder tabla = new StringBuilder();
            tabla.Append("<table border='1' align= 'center'>");
            tabla.Append("<tr>");
            tabla.Append("<td width='68px'>Cantidad</td>");
            tabla.Append("<td width='498px'>Producto</td>");
            tabla.Append("</tr>");


            foreach (var iten in x.ObtenerProductosBodega().Where(c=>c.Accion=="Salida"))
            {
                if (iten.CabeceraComprobante == Convert.ToInt32(DropDowNumero_factura.SelectedValue))
                {
                    tabla.Append("<tr>");
                    tabla.Append("<td>" + iten.Existencias + "</td>");
                    tabla.Append("<td>" + iten.NombreProducto + "</td>");
                    tabla.Append("</tr>");
                }
            }

            tabla.Append("</table>");

            return tabla.ToString();


        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Guardar();
            Literal1.Text = llenarproductosSalidos();
        }

        private void Guardar()
        {
            if (TextBox1.Text !="" && TextBox1.Text != "0")
            {
                int exixtencias;
                ClaseProducto y = new ClaseProducto();
                y = y.obtenerDatos().Where(c => c.ProductoId == Convert.ToInt32(DropDownList1.SelectedValue)).FirstOrDefault();
                exixtencias = (y.Existencias - Convert.ToInt32(TextBox1.Text));
                if (exixtencias >= 0)
                {
                    actualizar_existencias(exixtencias);
                    IngresoDetalleComprobante x = new IngresoDetalleComprobante();
                    Label15.Text = x.ingresarDetalle(new IngresoDetalleComprobante { Cantidad = Convert.ToInt32(TextBox1.Text), ProductoId = Convert.ToInt32(DropDownList1.SelectedValue), CabeseraComprobanteId = Convert.ToInt32(DropDowNumero_factura.SelectedValue) });
                }
                else
                {
                    Label15.Text = "Las salidas no puede ser mayor a las existencias";
                }
            }
            else
            {
                Label15.Text = "Debe ingresar cantidad";
            }
        }

        private void actualizar_existencias(int zz)
        {
        
            IngresoDetalleComprobante y = new IngresoDetalleComprobante();
            Label16.Text = y.ActualizarExistencias(new IngresoDetalleComprobante { Cantidad = Convert.ToInt32(zz), ProductoId = Convert.ToInt32(DropDownList1.SelectedValue) }); 
        
        }
        
    }
}